//@author A0105566E


#ifndef CONSTANT_H
#define CONSTANT_H

#include <string>
using namespace std;


//Emunration to indicate different kinds of task
enum TaskType { FLOATING, DEADLINE, TIMED };


//Emuration to indicate the result of executing commands
enum ResultType {
	ERROR_PROCESSING_COMMAND,
	SUCCESS
};


//emuration to indicate different types of commands
enum CommandType { ADD, DELETE, UPDATE, SEARCH, DISPLAY, MARK, UNMARK, UNDO, REDO, EXIT, SUMMARY, INVALID };



//constant string used in keyboardWarrior class
const string MESSAGE_WELCOME = "Welcome to Keyboard Warrior!\n";
const string MESSAGE_PROMPT = "What would you like to do? ";
const string MESSAGE_ERROR = "Operation cannot be performed. Please check your inputs and try again\n";
const string MESSAGE_EXIT = "Thank you for using Keyboard Warrior. Hope to see you soon!\n";
const string MESSAGE_ADD_ERROR="The inputs for the add function have been entered wrongly.\n";

//constant string used to indicate different kinds of errors or success 
const string MESSAGE_ADD_SUCCESS = "Task has been added successfully.\n\n";
const string MESSAGE_DELETE_SUCCESS = "Task has been deleted successfully.\n\n";
const string MESSAGE_UPDATE_SUCCESS = "Task has been updated successfully.\n\n";
const string MESSAGE_LOAD_SUCCESS = "File has been loaded successfully.\n\n";
const string MESSAGE_LOAD_FAIL_TIME=" The save file may be corrupted. Please check that there are no errors in the times of the tasks. \n\n";
const string MESSAGE_LOAD_FAIL_DATE=" The save file may be corrupted. Please check that there are no errors in the dates of the tasks. \n\n";

//constant string for display
const string MESSAGE_PARTITION_1="++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
const string MESSAGE_PARTITION_2="--------------------------------------------------------------------\n";
const string MESSAGE_DISPLAY = "L     IIIII SSSSS TTTTT   OOOOO FFFFF  TTTTT AAAAA SSSSS K   K SSSSS\n"
							   "L       I   S       T     O   O F        T   A   A S     K  K  S\n"
							   "L       I   SSSSS   T     O   O FFFFF    T   AAAAA SSSSS KKK   SSSSS\n"
							   "L       I       S   T     O   O F        T   A   A     S K  K      S\n"
							   "LLLLL IIIII SSSSS   T     OOOOO F        T   A   A SSSSS K   K SSSSS\n\n";



//constant string for display the result of excuting commands
const string MESSAGE_UNDO_SUCCESS = "Last command has been successfully undone.\n\n";
const string MESSAGE_UNDO_FAILURE = "There are no commands to undo.\n\n";
const string MESSAGE_REDO_SUCCESS = "Last command has been successfully redone. \n\n";
const string MESSAGE_REDO_FAILURE = "There are no commands to redo. \n\n";
const string MESSAGE_DONE =  " (Completed)";
const string MESSAGE_SEARCH_ZERO_RESULTS ="No task contains that query\n\n";
const string MESSAGE_INVALID_COMMAND = "This is an invalid command. Please check your inputs and try again.\n\n";
const string MESSAGE_ERROR_INVALID_INPUTS ="Incorrect number of inputs. Please check your inputs and try again\n\n";
const string MESSAGE_MARK_DONE = "Task marked completed successfully.\n";
const string MESSAGE_ALR_DONE = "This task is already completed.\n";
const string MESSAGE_UNDONE_SUCCESS =  "Task marked uncompleted successfully.\n";
const string MESSAGE_NO_MATCH_RESULT =  "No matching tasks found.\n";
const string MESSAGE_UNKNOWN_ERROR  = "An unknown error occurred.\n";
const string MESSAGE_UNKNOWN_ERROR_ILLEGAL  = "This action is not allowed.\n";
const string MESSAGE_CANDIDATE = "The candidate solutions are: \n";
const string MESSAGE_ERROR_DEADLINE="One of the Deadline Tasks from the savefile might be corrupted.\n";
const string MESSAGE_CHECK_USER_GUIDE="Please check the user guide to resolve this error.\n\n";
const string MESSAGE_ERROR_TIMEDTASK_DATE="One of the dates of the Timed Tasks from savefile might be corrupted.\n";
const string MESSAGE_ERROR_TIMEDTASK="One of the Timed Tasks from savefile might be corrupted.\n";
const string MESSAGE_ERROR_UNIDENTIFIED_TASK="An unidentified task has been found.\n";
const string MESSAGE_ERROR_MISMATCHED_TASKS="This does not match any given tasks\n";
#endif